Skip to content

Comments

Refactor jit.yml#144577

Open
savannahostrowski wants to merge 9 commits intopython:mainfrom
savannahostrowski:jit-yml-cleanup
Open

Refactor jit.yml#144577
savannahostrowski wants to merge 9 commits intopython:mainfrom
savannahostrowski:jit-yml-cleanup

Conversation

@savannahostrowski
Copy link
Member

@savannahostrowski savannahostrowski commented Feb 7, 2026

Similar to #144553, this cleans up jit.yml. The biggest changes here are moving LLVM version to an env var, since we are only testing one version anyway, and consolidating all of the one-off jobs into one job with a matrix (we've been accumulating free-threading, JIT debug, JIT + tail call etc over time; I could probably be convinced this isn't worth the ~30 lines saved if the matrix feels too heterogeneous). I've also lessened timeout-minutes from 90 to 60 minutes to match other CI files.

I think this can also be backported to 3.14, though, the LLVM version will be 20 instead of 21.

Copy link
Member

@hugovk hugovk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good!

./python -m test --multiprocess 0 --timeout 4500 --verbose2 --verbose3
jit:

jit-windows:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is the JIT workflow, can skip the prefix.

Suggested change
jit-windows:
windows:


jit-with-disabled-gil:
name: Free-Threaded (Debug)
jit-macos:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
jit-macos:
macos:


no-opt-jit:
name: JIT without optimizations (Debug)
jit-linux:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
jit-linux:
linux:


tail-call-jit:
name: JIT with tail calling interpreter
jit-linux-extras:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
jit-linux-extras:
linux-extras:

name: JIT with tail calling interpreter
jit-linux-extras:
name: ${{ matrix.name }}
needs: interpreter
Copy link
Member

@hugovk hugovk Feb 21, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we still want to gate everything on this step, rather than kicking them all of in parallel?

Image

For successful cases, it would reduce end-to-end times by ~12 minutes, from ~39 to ~27 minutes.

For unsuccessful, it would try and run the other builds when the interpreter job failed, but they might also fail quite soon?

Comment on lines +116 to +123
- name: Build
run: |
export SDKROOT="$(xcrun --show-sdk-path)"
# Set MACOSX_DEPLOYMENT_TARGET and -Werror=unguarded-availability to
# make sure we don't break downstream distributors (like uv):
export CFLAGS_JIT='-Werror=unguarded-availability'
export MACOSX_DEPLOYMENT_TARGET=10.15
./configure --enable-experimental-jit --enable-universalsdk --with-universal-archs=universal2 ${{ matrix.debug && '--with-pydebug' || '' }}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Comparing tail-call.yml, that one exports a couple of paths and sets CC:

Image

Do we need this here? Or do we not need it there?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

JIT auto finds required clang, so we dont need CC

./configure --enable-experimental-jit --with-pydebug
sudo bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)" ./llvm.sh ${{ env.LLVM_VERSION }}
export PATH="$(llvm-config-${{ env.LLVM_VERSION }} --bindir):$PATH"
./configure --enable-experimental-jit ${{ matrix.debug && '--with-pydebug' || '' }}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Comparing again:

Image

We always set CC in tail-call.yml but not here. Also below, in linux-extras, CC is conditionally set. All intentional?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants